package com.heima.oopAdvanced.n03polymorphism.demo02;

public class demo {
    public static void main(String[] args) {
        /** 多态综合练习
         * 根据需求完成代码:
         * 	1.定义狗类
         * 		属性：
         * 			年龄，颜色
         * 		行为:
         * 			eat(String something)(something表示吃的东西)
         * 			看家lookHome方法(无参数)
         *
         * 	2.定义猫类
         * 		属性：
         * 			年龄，颜色
         * 		行为:
         * 			eat(String something)方法(something表示吃的东西)
         * 			逮老鼠catchMouse方法(无参数)
         *
         * 	3.定义Person类//饲养员
         * 		属性：
         * 			姓名，年龄
         * 		行为：
         * 			keepPet(Dog dog,String something)方法
         * 				功能：喂养宠物狗，something表示喂养的东西
         * 		行为：
         * 			keepPet(Cat cat,String something)方法
         * 				功能：喂养宠物猫，something表示喂养的东西
         * 		生成空参有参构造，set和get方法
         * 	4.定义测试类(完成以下打印效果):
         * 		keepPet(Dog dog,String somethind)方法打印内容如下：
         * 			年龄为30岁的老王养了一只黑颜色的2岁的狗
         * 			2岁的黑颜色的狗两只前腿死死的抱住骨头猛吃
         * 		keepPet(Cat cat,String somethind)方法打印内容如下：
         * 			年龄为25岁的老李养了一只灰颜色的3岁的猫
         * 			3岁的灰颜色的猫眯着眼睛侧着头吃鱼
         * 	5.思考：
         * 		1.Dog和Cat都是Animal的子类，以上案例中针对不同的动物，定义了不同的keepPet方法，过于繁琐，能否简化，并体会简化后的好处？
         * 		2.Dog和Cat虽然都是Animal的子类，但是都有其特有方法，能否想办法在keepPet中调用特有方法？
         */
        Person p1 = new Person("老王", 30);
        Person p2 = new Person("老李", 25);

        Dog dog = new Dog(2, "黑");
        Cat cat = new Cat(3, "灰");

        p1.keepPet(dog, "骨头");
        p2.keepPet(cat, "鱼");
    }
}
